本系列文章將試著遵循 Aggregate libraries instead of frameworks 的核心思想,開發一套能夠完整運行的 web-based 服務。所謂 web-based 就是會包含一個標準的 HTML5 web application ,以及背後的 database 、 API server 等後端架構。
另外,雖然本次主題以 web frontend 為主,但開發完成後不能運行也沒用,因此預計會在後期帶入 server deployment 的範例與細節。文章會以一個自行發想的需求當成主軸進行討論;隨著開發過程會一路挑選並組合不同的 library、framework、採用技術,並參雜一些作者個人的比較心得、技術概念或語法的介紹等。
以下簡單描述預定的系統架構:
接下來 30 天的開發內容會遵循此順序進行:
因應這次的鐵人賽,本次試著開發作者就學時期開發過的舊題目--線上作業批改繳交系統:這個系統的使用情境是讓學生在修課時登入網站,直接在助教出的功課(assignment)頁面上傳自己寫的答案(submission)。助教看過 assignment 內容後,可以直接在上面批改(grading)給分。這次就以實作這樣的系統作為開發主軸,而因為並非正式產品開發,其中的需求細節會由作者自行發想補上。
以原始的題目來說,其實還有學生互相給分、即時批改(因為是程式作業,所以 backend 用 Python 跑過結果後直接產生分數)並顯示於前端等功能。若後續鐵人賽仍有餘力的話,可能會加入使用 WebSocket 做網頁即時功能的開發範例。